Django অ্যাপ্লিকেশন তৈরি করার সময়, অ্যাপ্লিকেশনটি কোন সার্ভারে রান করবে তা নির্ধারণ করা অত্যন্ত গুরুত্বপূর্ণ। WSGI (Web Server Gateway Interface) এবং ASGI (Asynchronous Server Gateway Interface) হল দুটি প্রধান ইন্টারফেস যা Django অ্যাপ্লিকেশনকে ওয়েব সার্ভারের সাথে সংযোগ স্থাপন করতে সাহায্য করে। WSGI সাধারণত সিঙ্ক্রোনাস অ্যাপ্লিকেশনদের জন্য ব্যবহৃত হয়, এবং ASGI অ্যাসিঙ্ক্রোনাস অ্যাপ্লিকেশনদের জন্য ব্যবহৃত হয়।
১. WSGI সার্ভার
WSGI একটি স্ট্যান্ডার্ড প্রোটোকল যা ওয়েব সার্ভার এবং Python অ্যাপ্লিকেশনগুলির মধ্যে যোগাযোগের জন্য ব্যবহৃত হয়। এটি সিঙ্ক্রোনাস অ্যাপ্লিকেশনের জন্য উপযুক্ত, এবং Django প্রজেক্টে এটি ডিফল্ট সার্ভার হিসেবে ব্যবহৃত হয়।
WSGI কনফিগারেশন
Django-তে WSGI কনফিগারেশন সাধারণত wsgi.py ফাইলে থাকে, যেটি প্রজেক্টের মূল ডিরেক্টরির মধ্যে থাকে। এই ফাইলটি অ্যাপ্লিকেশনটি সার্ভারের সাথে যুক্ত করতে ব্যবহৃত হয়।
wsgi.py ফাইলের উদাহরণ:
import os
from django.core.wsgi import get_wsgi_application
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'myproject.settings')
application = get_wsgi_application()
get_wsgi_application(): এটি Django অ্যাপ্লিকেশনকে WSGI সার্ভারের সাথে যুক্ত করতে ব্যবহৃত হয়।os.environ.setdefault(): এটি Django এর সেটিংস ফাইলটি নির্ধারণ করে, যাতে WSGI সার্ভার সেটিংস ফাইলটি সঠিকভাবে খুঁজে পায়।
WSGI সার্ভার নির্বাচন
Django প্রজেক্টে WSGI রান করার জন্য জনপ্রিয় সার্ভারগুলো হচ্ছে:
- Gunicorn: এটি একটি খুবই জনপ্রিয় WSGI সার্ভার যা উচ্চ পারফরমেন্স এবং সহজ কনফিগারেশনের জন্য ব্যবহৃত হয়।
- uWSGI: আরেকটি শক্তিশালী WSGI সার্ভার, যেটি বেশি কনফিগারেবল এবং অনেক সার্ভার ফিচার সমর্থন করে।
Gunicorn ইনস্টল এবং রান:
প্রথমে Gunicorn ইনস্টল করুন:
pip install gunicornতারপর, Gunicorn সার্ভারটি Django প্রজেক্টে রান করুন:
gunicorn myproject.wsgi:application
এখানে myproject.wsgi:application হলো WSGI অ্যাপ্লিকেশনের রেফারেন্স যা আপনি আপনার প্রজেক্টের পাথ অনুযায়ী পরিবর্তন করবেন।
২. ASGI সার্ভার
ASGI হল একটি অ্যাসিঙ্ক্রোনাস স্ট্যান্ডার্ড প্রোটোকল যা Django অ্যাপ্লিকেশনকে অ্যাসিঙ্ক্রোনাস এবং সিঙ্ক্রোনাস উভয় ধরনের সার্ভিস প্রদান করতে সক্ষম করে। এটি রিয়েল-টাইম কমিউনিকেশন এবং ওয়েবসকেটের মতো অ্যাসিঙ্ক্রোনাস কার্যকলাপের জন্য উপযুক্ত।
ASGI কনফিগারেশন
Django 3.0 থেকে ASGI সমর্থন যুক্ত হয়েছে, এবং এটি সাধারণত asgi.py ফাইলে কনফিগার করা হয়, যা wsgi.py ফাইলের অনুরূপ। ASGI ফাইলটি অ্যাপ্লিকেশনটি অ্যাসিঙ্ক্রোনাস পরিবেশে রান করার জন্য ব্যবহৃত হয়।
asgi.py ফাইলের উদাহরণ:
import os
from django.core.asgi import get_asgi_application
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'myproject.settings')
application = get_asgi_application()
এখানে:
get_asgi_application(): এটি ASGI সার্ভারের সাথে Django অ্যাপ্লিকেশনকে যুক্ত করতে ব্যবহৃত হয়।
ASGI সার্ভার নির্বাচন
ASGI অ্যাপ্লিকেশনের জন্য কিছু জনপ্রিয় সার্ভার হল:
- Daphne: এটি Django Channels এর একটি অংশ এবং একটি ASGI সার্ভার যা রিয়েল-টাইম অ্যাপ্লিকেশন এবং ওয়েবসকেট ব্যবস্থাপনা সমর্থন করে।
- Uvicorn: এটি একটি দ্রুত এবং অ্যাসিঙ্ক্রোনাস ASGI সার্ভার যা খুবই জনপ্রিয় এবং ভালো পারফরম্যান্স প্রদান করে।
Daphne ইনস্টল এবং রান:
প্রথমে Daphne ইনস্টল করুন:
pip install daphneতারপর, Daphne সার্ভারটি Django প্রজেক্টে রান করুন:
daphne myproject.asgi:application
Uvicorn ইনস্টল এবং রান:
প্রথমে Uvicorn ইনস্টল করুন:
pip install uvicornতারপর, Uvicorn সার্ভারটি Django প্রজেক্টে রান করুন:
uvicorn myproject.asgi:application
৩. WSGI vs ASGI
| বৈশিষ্ট্য | WSGI (Web Server Gateway Interface) | ASGI (Asynchronous Server Gateway Interface) |
|---|---|---|
| অ্যাপ্লিকেশন প্রকার | সিঙ্ক্রোনাস | অ্যাসিঙ্ক্রোনাস এবং সিঙ্ক্রোনাস |
| সমর্থিত কাজ | সাধারণ ওয়েব পেজ, সিঙ্ক্রোনাস API | ওয়েবসকেট, রিয়েল-টাইম, লং পোলিং, অ্যাসিঙ্ক্রোনাস API |
| পারফরম্যান্স | ভালো, তবে কিছু লিমিটেশন রয়েছে | উচ্চ পারফরম্যান্স এবং স্কেলেবিলিটি |
| ব্যবহার | সাধারণ ওয়েব অ্যাপ্লিকেশন | রিয়েল-টাইম অ্যাপ্লিকেশন, ওয়েবসকেট |
সারাংশ
Django-তে WSGI এবং ASGI দুই ধরনের সার্ভার ব্যবহৃত হয়। WSGI সিঙ্ক্রোনাস অ্যাপ্লিকেশন জন্য ব্যবহৃত হয়, যেখানে ASGI অ্যাসিঙ্ক্রোনাস অ্যাপ্লিকেশন এবং রিয়েল-টাইম কার্যকলাপ (যেমন ওয়েবসকেট) পরিচালনার জন্য উপযুক্ত। Django-তে এগুলোর ব্যবহারের জন্য wsgi.py এবং asgi.py ফাইলগুলো কনফিগার করা হয়, এবং আপনি সার্ভার হিসেবে Gunicorn, uWSGI, Daphne, বা Uvicorn ব্যবহার করতে পারেন।
Read more